import React, { useState, useEffect } from 'react';
import { Table, Button, message } from 'antd';
import { getBorrowList, updateBorrowStatus, permitUpdate } from '../../../services/api';
import moment from 'moment';
import 'moment/locale/zh-cn';

const ReturnBorrowUsr = () => {
  const [loading, setLoading] = useState(false);
  const [data, setData] = useState([]);
  const [currentUser, setCurrentUser] = useState(null);

  // 设置 moment 为中文
  moment.locale('zh-cn');

  useEffect(() => {
    // 从 sessionStorage 获取当前用户信息
    const userInfo = JSON.parse(sessionStorage.getItem('user') || '{}');
    setCurrentUser(userInfo);
  }, []);

  const formatDate = (dateString) => {
    if (!dateString) return '';
    
    // 如果是中文格式的日期，先用 moment 解析
    if (typeof dateString === 'string' && dateString.includes('月')) {
      const m = moment(dateString, 'MMMM DD, YYYY', 'zh-cn');
      if (m.isValid()) {
        return m.format('YYYY-MM-DD');
      }
    }
    
    // 如果是长整数形式的时间戳字符串，需要转换为数字
    if (typeof dateString === 'string' && !isNaN(dateString)) {
      return moment(parseInt(dateString)).format('YYYY-MM-DD');
    }
    
    // 如果已经是数字类型的时间戳
    if (typeof dateString === 'number') {
      return moment(dateString).format('YYYY-MM-DD');
    }
    
    // 其他情况尝试直接解析
    const m = moment(dateString);
    if (m.isValid()) {
      return m.format('YYYY-MM-DD');
    }
    
    return '';
  };

  const handleReturn = async (record) => {
    try {
      setLoading(true);
      // 直接更新借用状态为已归还
      const updateStatusResponse = await updateBorrowStatus(record.borrowId, {
        borrowStatus: '已归还'
      });

      if (updateStatusResponse.code === 200) {
        // 更新资产数量
        const updateAssetResponse = await permitUpdate(record.assetId, {
          assetNum: record.borrowNum,
          assetStatus: 'return' // 操作类型：归还
        });

        if (updateAssetResponse.code !== 200) {
          message.error('更新资产数量失败');
          return;
        }

        message.success('归还成功');
        fetchBorrowList(); // 刷新列表
      } else {
        message.error(updateStatusResponse.message || '归还失败');
      }
    } catch (error) {
      console.error('归还失败:', error);
      message.error('归还失败: ' + (error.message || '未知错误'));
    } finally {
      setLoading(false);
    }
  };

  const fetchBorrowList = async () => {
    setLoading(true);
    try {
      const response = await getBorrowList();
      if (response.code === 200 && currentUser?.uId) {
        // 只显示当前用户的"借用中"的记录
        const filteredData = response.data.filter(
          item => item.uId === currentUser.uId && item.borrowStatus === '借用中'
        );
        // 格式化日期
        const formattedData = filteredData.map(item => ({
          ...item,
          borrowTime: formatDate(item.borrowTime),
          expectedReturnTime: formatDate(item.expectedReturnTime)
        }));
        setData(formattedData);
      } else {
        message.error(response.message || '获取借用列表失败');
      }
    } catch (error) {
      console.error('获取借用列表失败:', error);
      message.error('获取借用列表失败');
    }
    setLoading(false);
  };

  useEffect(() => {
    if (currentUser) {
      fetchBorrowList();
    }
  }, [currentUser]);

  const columns = [
    {
      title: '借用ID',
      dataIndex: 'borrowId',
      key: 'borrowId',
    },
    {
      title: '资产名称',
      dataIndex: 'assetName',
      key: 'assetName',
    },
    {
      title: '借用数量',
      dataIndex: 'borrowNum',
      key: 'borrowNum',
    },
    {
      title: '借用时间',
      dataIndex: 'borrowTime',
      key: 'borrowTime',
    },
    {
      title: '预计归还时间',
      dataIndex: 'expectedReturnTime',
      key: 'expectedReturnTime',
    },
    {
      title: '操作',
      key: 'action',
      render: (_, record) => (
        <Button 
          type="primary" 
          onClick={() => handleReturn(record)}
        >
          归还
        </Button>
      ),
    },
  ];

  return (
    <div style={{ padding: '24px' }}>
      <h2>归还借用</h2>
      <Table
        columns={columns}
        dataSource={data}
        rowKey="borrowId"
        pagination={{
          defaultPageSize: 10,
          showSizeChanger: true,
          showTotal: (total) => `共 ${total} 条记录`
        }}
        loading={loading}
      />
    </div>
  );
};

export default ReturnBorrowUsr; 